package com.opgea.tutor.service;

import java.util.List;

import com.opgea.tutor.TutorException;
import com.opgea.tutor.domain.model.PrimeFacesFileUploadBean;
import com.opgea.tutor.web.dto.AddressDTO;
import com.opgea.tutor.web.dto.EducationDTO;
import com.opgea.tutor.web.dto.EmailDTO;
import com.opgea.tutor.web.dto.LocationDTO;
import com.opgea.tutor.web.dto.PhoneDTO;
import com.opgea.tutor.web.dto.SpecializationDTO;
import com.opgea.tutor.web.dto.TutorDTO;

public interface TutorService {

    public TutorDTO create(TutorDTO tutorDTO) throws TutorException;

    public TutorDTO update(TutorDTO tutorDTO) throws TutorException;

    public TutorDTO remove(Long id) throws TutorException;

    public TutorDTO find(Long id) throws TutorException;

    public List<TutorDTO> findAll() throws TutorException;

    public TutorDTO findByLoginId(Long id) throws TutorException;

    public AddressDTO findAddress(Long tutorId) throws TutorException;

    public List<PhoneDTO> findPhoneNumbers(Long tutorId) throws TutorException;

    public List<EmailDTO> findEmailIds(Long tutorId) throws TutorException;

    public List<SpecializationDTO> findSpecializations(Long tutorId)
	    throws TutorException;

    public List<EducationDTO> findEducations(Long tutorId)
	    throws TutorException;

    public LocationDTO findLocation(Long tutorId) throws TutorException;

    public AddressDTO updateAddress(Long tutorId, AddressDTO addressDTO)
	    throws TutorException;

    public PhoneDTO updatePhone(Long tutorId, PhoneDTO phoneDTO)
	    throws TutorException;

    public EmailDTO updateEmail(Long tutorId, EmailDTO emailDTO)
	    throws TutorException;

    public SpecializationDTO updateSpecialization(Long tutorId,
	    SpecializationDTO specializationDTO) throws TutorException;

    public LocationDTO updateLocation(Long tutorId, LocationDTO locationDTO)
	    throws TutorException;

    public EducationDTO updateEducation(Long tutorId, EducationDTO educationDTO)
	    throws TutorException;

    public void uploadDocument(Long tutorId,
	    PrimeFacesFileUploadBean pfFileUploadBean) throws TutorException;

    public PrimeFacesFileUploadBean findDocumentByType(Long tutorId,
	    String documentType) throws TutorException;

    public EducationDTO removeEducation(Long tutorId, Long educationDetailsId)
	    throws TutorException;

}
